Skip to content

MongoDB_基本操作

mongodb 的数据库中的一种,是面向文档存储的数据库;

他的概念和关系型数据有些区别。

跟 MySQL 类似,他能够执行 CRUD,事务,索引 等操作。

在技术选型的时候,对于高并发、海量数据读写、高可用、搞可扩展有需求,数据量大,写入频率,价值较低,对事务性要求不高的时候,可以考虑使用 MongoDB来实现数据的存储。

体系结构

  • database collectino document field index

image.png

什么是 MongoDB

feb9bb3170c4dbf4d079301e2e2b7f6.png

使用示例

在Spring Boot应用中集成MongoDB来进行数据的CRUD操作

首先,在你的pom.xml文件中添加Spring Boot的Starter Data MongoDB依赖。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    <!-- 添加Spring Boot的Web支持 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

application.propertiesapplication.yml配置文件中配置MongoDB的连接信息。

# application.properties
spring.data.mongodb.uri=mongodb://yourUsername:yourPassword@localhost:27017/yourDatabase

或者使用YAML格式:

# application.yml
spring:
  data:
    mongodb:
      uri: mongodb://yourUsername:yourPassword@localhost:27017/yourDatabase

创建实体类

定义一个MongoDB的文档类。

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
public class User {
    @Id
    private String id;
    private String name;
    private Integer age;
    
    // 省略构造函数、Getter和Setter方法
}

创建一个继承MongoRepository的接口用于数据访问。

import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserRepository extends MongoRepository<User, String> {
    // 这里可以定义一些根据字段查询的方法,Spring Data会自动实现
}

创建一个REST控制器来处理HTTP请求。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/users")
public class UserController {
    
    @Autowired
    private UserRepository userRepository;
    
    @PostMapping
    public User addUser(@RequestBody User user) {
        return userRepository.save(user);
    }
    
    @GetMapping
    public List<User> getUsers() {
        return userRepository.findAll();
    }
    
    @GetMapping("/{id}")
    public User getUserById(@PathVariable String id) {
        return userRepository.findById(id).orElse(null);
    }
    
    @PutMapping("/{id}")
    public User updateUser(@PathVariable String id, @RequestBody User updatedUser) {
        updatedUser.setId(id);
        return userRepository.save(updatedUser);
    }
    
    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable String id) {
        userRepository.deleteById(id);
    }
}

Docker 方式安装 MongoDB

参考: https://blog.csdn.net/li_wen_jin/article/details/133639954

拉取镜像

docker pull mongo:latest

挂载目录

mkdir -p /mydata/mongo/config
mkdir -p /mydata/mongo/data
mkdir -p /mydata/mongo/logs
touch /mydata/mongo/config/mongod.conf
chmod 777 /mydata/mongo

配置文件内容 mongod.conf

# 数据库存储路径
dbpath=/mydata/mongo/data
 
# 日志文件路径
logpath=/mydata/mongo/logs/mongod.log
 
# 监听的端口
port=27017
 
# 允许所有的 IP 地址连接
bind_ip=0.0.0.0
 
# 启用日志记录
journal=true
 
# 是否后台运行
fork=true     
                   
# 启用身份验证
#auth=true

运行容器

docker run -dit --name mongo \
-p 27017:27017 \
-v /mydata/mongo/config/mongod.conf:/etc/mongod.conf \
-v /mydata/mongo/data:/data/db \
-v /mydata/mongo/logs:/var/log/mongodb \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=wz65432 \
--restart=always  \
mongo

参考